Transakce a obsluha exception v Try-except (FB)
Otázka od: Tomas Bradle
9. 6. 2004 23:42
Zdravim,
mam ukladani do databaze uzavrene do bloku TRY-EXCEPT nasledujicim zpusobem:
trWrite.StartTransaction;
try
{tady jsou operace na transakci trWrite}
trWrite.Commit;
except
trWrite.Rollback;
end; {try}
Kdyz vznikne exception pri ukladani, zmeny se neprojevi, ale je to
"potichu". Ja jsem zkousel pridat za rollback jeste "raise;", aby se vyjimka
sirila dal a dala se zase odchytit. Je to spravny postup? Jake mate
prakticke zkusenosti?
diky
Tomas Bradle
t.bradle@worldonline.cz
Odpovedá: Petr Zahradnik
9. 6. 2004 23:45
Puvodni zprava ze dne 10.6.2004:
> Kdyz vznikne exception pri ukladani, zmeny se neprojevi, ale je to
> "potichu". Ja jsem zkousel pridat za rollback jeste "raise;", aby se
> vyjimka sirila dal a dala se zase odchytit. Je to spravny postup?
Ano, je. Pripadne si tim raise vyvolas svou vlastni vyjimku, abys ji
lepe poznal.
> Jake mate prakticke zkusenosti?
S cim prakticke zkusenosti? Jestli to jako funguje? No funguje.
Petr Zahradnik, pocitacovy expert
==========================================================
Petr Zahradnik, Computer Laboratory
Obvodova 740/14, 400 07 Usti nad Labem
telefon: 475 501 627, mobil: 602 409 601, fax: 475 511 338
web: http://www.clexpert.cz, e-mail: clexpert@clexpert.cz
ICQ: 21215917, MSN: clexpert@clexpert.cz
==========================================================
Odpovedá: Lebeda David
10. 6. 2004 7:24
> trWrite.StartTransaction;
> try
> {tady jsou operace na transakci trWrite}
> trWrite.Commit;
> except
> trWrite.Rollback;
> end; {try}
>
> Kdyz vznikne exception pri ukladani, zmeny se neprojevi, ale je to
> "potichu". Ja jsem zkousel pridat za rollback jeste "raise;", aby se
> vyjimka sirila dal a dala se zase odchytit. Je to spravny postup? Jake
> mate prakticke zkusenosti?
Ahoj,
pouziti raise je mozna cesta, zalezi, co potrebujes docilit. Muzes i v tom
except bloku
pouzit neco jako
except
on E: Exception do
begin
trWrite.Rollback;
ShowMessage('Pri pokusu o to a to nastala vyjimka: ' + E.Message);
...pripadne exit;
end;
end;
cimz vyjimku zobrazis a je ted uz jen na tobe, zda ji chces poslat dal nebo ne.
David Lebeda